package main

import (
	"bufio"
	"fmt"
	"os"
	"os/exec"
	"strings"
)

func ssh(userHost string, port string) {
	// 构建 ssh 命令字符串
	sshCmd := fmt.Sprintf("ssh -p %s %s", port, userHost)
	// 使用 cmd.exe 的 start 命令，在新窗口中启动 PowerShell 并执行 ssh 命令
	cmd := exec.Command("cmd.exe", "/C", "start", "powershell", "-NoExit", "-Command", sshCmd)
	// 使用 Start() 启动命令，让其在新窗口中独立运行，不阻塞当前程序
	err := cmd.Start()
	if err != nil {
		fmt.Printf("执行 SSH 命令时出错: %v\n", err)
	}
}

func readFile(path string) ([]string, error) {
	file, err := os.Open(path)
	if err != nil {
		return nil, err
	}
	defer file.Close()
	var lines []string
	scanner := bufio.NewScanner(file)
	for scanner.Scan() {
		lines = append(lines, scanner.Text())
	}
	if err := scanner.Err(); err != nil {
		return nil, err
	}
	return lines, nil
}

func main() {
	var txt string
	fmt.Println("所有输入参数：")
	for i, arg := range os.Args {
		fmt.Printf("参数 %d: %s\n", i, arg)
		if strings.HasSuffix(arg, ".txt") {
			txt = arg
		}
	}
	// 调用 readFile 函数
	lines, err := readFile(txt)
	if err != nil {
		fmt.Printf("读取文件时出错: %v\n", err)
		return
	}
	// 打印所有行内容
	fmt.Println("文件内容:")
	for i, line := range lines {
		fmt.Printf("第 %d 行: %s\n", i+1, line)
	}
	// 检查参数数量
	if len(os.Args) < 2 || len(os.Args) > 3 {
		fmt.Println("参数错误： 程序名 用户名@主机名 [端口号]")
		return
	}
	userHost := os.Args[1]
	port := "22" // 默认端口号
	if len(os.Args) == 3 {
		port = os.Args[2]
	}
	ssh(userHost, port)
	fmt.Println("按任意键退出...")
	b := make([]byte, 1)
	os.Stdin.Read(b)
}
